package com.example.service;

import com.example.dto.AnnouncementDTO;
import com.example.dto.AnnouncementQuery;
import com.example.entity.AnnouncementDO;
import java.util.List;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 宣传信息管理Service
 * </p>
 * @author 34448
 */
public interface AnnouncementService {

    /**
     * 发布宣传信息
     *
     * @param announcementDTO 宣传信息DTO
     * @param userId 用户ID
     * @return
     */
    Boolean addAnnouncement(@NotNull AnnouncementDTO announcementDTO, Integer userId);

    /**
     * 修改宣传信息
     *
     * @param announcementDTO 宣传信息DTO
     * @param userId 用户ID
     * @return
     */
    Boolean updateAnnouncement(@NotNull AnnouncementDTO announcementDTO, Integer userId);

    /**
     * 删除宣传信息
     *
     * @param announcementId 公告ID
     * @param userId 用户ID
     * @return
     */
    Boolean deleteAnnouncement(@NotNull Integer announcementId, Integer userId);

    /**
     * 查询宣传信息
     *
     * @param announcementQuery 查询条件
     * @return
     */
    List<AnnouncementDO> queryAnnouncements(AnnouncementQuery announcementQuery);

    /**
     * 导入宣传信息
     *
     * @param filePath 文件路径
     * @param userId 用户ID
     * @return
     */
    Boolean importAnnouncements(@NotNull String filePath, Integer userId);

    /**
     * 导出宣传信息
     *
     * @param announcementIds 公告ID列表
     * @param userId 用户ID
     * @return
     */
    List<AnnouncementDO> exportAnnouncements(List<Integer> announcementIds, Integer userId);
}